class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> ans;
        unordered_map<string, vector<string>> m;
        for(int i = 0; i < strs.size(); i++)
        {
            // 字母异位词的特点是排完序后是相等的，可以以此为key值放入hash表中
            string tmp = strs[i];
            sort(tmp.begin(), tmp.end());
            m[tmp].push_back(strs[i]);
        }
        for(const auto &e : m)
            ans.push_back(e.second);
        return ans;
    }
};